/**
 * PHOSIDE: PHosphorylation Site IDentification Engine.
 * Copyright 2009 Digital Biology Lab, University of Missouri.
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 3 of the License, or (at your option) any later
 * version. <p/> This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more
 * details.
 */

package phoside.knn.matrix.similarity;

/**
 *
 * @author gjj
 */
public class Blosum {
                
        public final static double[][] blosum45 = {
                { 5,-2,-1,-2,-1,-1,-1, 0,-2,-1,-1,-1,-1,-2,-1, 1, 0,-2,-2, 0,-1,-1,-1,-5},
                {-2, 7, 0,-1,-3, 1, 0,-2, 0,-3,-2, 3,-1,-2,-2,-1,-1,-2,-1,-2,-1, 0,-1,-5},
                {-1, 0, 6, 2,-2, 0, 0, 0, 1,-2,-3, 0,-2,-2,-2, 1, 0,-4,-2,-3, 4, 0,-1,-5},
                {-2,-1, 2, 7,-3, 0, 2,-1, 0,-4,-3, 0,-3,-4,-1, 0,-1,-4,-2,-3, 5, 1,-1,-5},
                {-1,-3,-2,-3,12,-3,-3,-3,-3,-3,-2,-3,-2,-2,-4,-1,-1,-5,-3,-1,-2,-3,-1,-5},
                {-1, 1, 0, 0,-3, 6, 2,-2, 1,-2,-2, 1, 0,-4,-1, 0,-1,-2,-1,-3, 0, 4,-1,-5},
                {-1, 0, 0, 2,-3, 2, 6,-2, 0,-3,-2, 1,-2,-3, 0, 0,-1,-3,-2,-3, 1, 4,-1,-5},
                { 0,-2, 0,-1,-3,-2,-2, 7,-2,-4,-3,-2,-2,-3,-2, 0,-2,-2,-3,-3,-1,-2,-1,-5},
                {-2, 0, 1, 0,-3, 1, 0,-2,10,-3,-2,-1, 0,-2,-2,-1,-2,-3, 2,-3, 0, 0,-1,-5},
                {-1,-3,-2,-4,-3,-2,-3,-4,-3, 5, 2,-3, 2, 0,-2,-2,-1,-2, 0, 3,-3,-3,-1,-5},
                {-1,-2,-3,-3,-2,-2,-2,-3,-2, 2, 5,-3, 2, 1,-3,-3,-1,-2, 0, 1,-3,-2,-1,-5},
                {-1, 3, 0, 0,-3, 1, 1,-2,-1,-3,-3, 5,-1,-3,-1,-1,-1,-2,-1,-2, 0, 1,-1,-5},
                {-1,-1,-2,-3,-2, 0,-2,-2, 0, 2, 2,-1, 6, 0,-2,-2,-1,-2, 0, 1,-2,-1,-1,-5},
                {-2,-2,-2,-4,-2,-4,-3,-3,-2, 0, 1,-3, 0, 8,-3,-2,-1, 1, 3, 0,-3,-3,-1,-5},
                {-1,-2,-2,-1,-4,-1, 0,-2,-2,-2,-3,-1,-2,-3, 9,-1,-1,-3,-3,-3,-2,-1,-1,-5},
                { 1,-1, 1, 0,-1, 0, 0, 0,-1,-2,-3,-1,-2,-2,-1, 4, 2,-4,-2,-1, 0, 0,-1,-5},
                { 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-1,-1, 2, 5,-3,-1, 0, 0,-1,-1,-5},
                {-2,-2,-4,-4,-5,-2,-3,-2,-3,-2,-2,-2,-2, 1,-3,-4,-3,15, 3,-3,-4,-2,-1,-5},
                {-2,-1,-2,-2,-3,-1,-2,-3, 2, 0, 0,-1, 0, 3,-3,-2,-1, 3, 8,-1,-2,-2,-1,-5},
                { 0,-2,-3,-3,-1,-3,-3,-3,-3, 3, 1,-2, 1, 0,-3,-1, 0,-3,-1, 5,-3,-3,-1,-5},
                {-1,-1, 4, 5,-2, 0, 1,-1, 0,-3,-3, 0,-2,-3,-2, 0, 0,-4,-2,-3, 4, 2,-1,-5},
                {-1, 0, 0, 1,-3, 4, 4,-2, 0,-3,-2, 1,-1,-3,-1, 0,-1,-2,-2,-3, 2, 4,-1,-5},
                {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-5},
                {-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5, 1}
        };
        
        public final static double[][] blosum62 = {
                { 4,-1,-2,-2, 0,-1,-1, 0,-2,-1,-1,-1,-1,-2,-1, 1, 0,-3,-2, 0,-2,-1, 0,-4},
                {-1, 5, 0,-2,-3, 1, 0,-2, 0,-3,-2, 2,-1,-3,-2,-1,-1,-3,-2,-3,-1, 0,-1,-4},
                {-2, 0, 6, 1,-3, 0, 0, 0, 1,-3,-3, 0,-2,-3,-2, 1, 0,-4,-2,-3, 3, 0,-1,-4},
                {-2,-2, 1, 6,-3, 0, 2,-1,-1,-3,-4,-1,-3,-3,-1, 0,-1,-4,-3,-3, 4, 1,-1,-4},
                { 0,-3,-3,-3, 9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4},
                {-1, 1, 0, 0,-3, 5, 2,-2, 0,-3,-2, 1, 0,-3,-1, 0,-1,-2,-1,-2, 0, 3,-1,-4},
                {-1, 0, 0, 2,-4, 2, 5,-2, 0,-3,-3, 1,-2,-3,-1, 0,-1,-3,-2,-2, 1, 4,-1,-4},
                { 0,-2, 0,-1,-3,-2,-2, 6,-2,-4,-4,-2,-3,-3,-2, 0,-2,-2,-3,-3,-1,-2,-1,-4},
                {-2, 0, 1,-1,-3, 0, 0,-2, 8,-3,-3,-1,-2,-1,-2,-1,-2,-2, 2,-3, 0, 0,-1,-4},
                {-1,-3,-3,-3,-1,-3,-3,-4,-3, 4, 2,-3, 1, 0,-3,-2,-1,-3,-1, 3,-3,-3,-1,-4},
                {-1,-2,-3,-4,-1,-2,-3,-4,-3, 2, 4,-2, 2, 0,-3,-2,-1,-2,-1, 1,-4,-3,-1,-4},
                {-1, 2, 0,-1,-3, 1, 1,-2,-1,-3,-2, 5,-1,-3,-1, 0,-1,-3,-2,-2, 0, 1,-1,-4},
                {-1,-1,-2,-3,-1, 0,-2,-3,-2, 1, 2,-1, 5, 0,-2,-1,-1,-1,-1, 1,-3,-1,-1,-4},
                {-2,-3,-3,-3,-2,-3,-3,-3,-1, 0, 0,-3, 0, 6,-4,-2,-2, 1, 3,-1,-3,-3,-1,-4},
                {-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4, 7,-1,-1,-4,-3,-2,-2,-1,-2,-4},
                { 1,-1, 1, 0,-1, 0, 0, 0,-1,-2,-2, 0,-1,-2,-1, 4, 1,-3,-2,-2, 0, 0, 0,-4},
                { 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 1, 5,-2,-2, 0,-1,-1, 0,-4},
                {-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1, 1,-4,-3,-2,11, 2,-3,-4,-3,-2,-4},
                {-2,-2,-2,-3,-2,-1,-2,-3, 2,-1,-1,-2,-1, 3,-3,-2,-2, 2, 7,-1,-3,-2,-1,-4},
                { 0,-3,-3,-3,-1,-2,-2,-3,-3, 3, 1,-2, 1,-1,-2,-2, 0,-3,-1, 4,-3,-2,-1,-4},
                {-2,-1, 3, 4,-3, 0, 1,-1, 0,-3,-4, 0,-3,-3,-2, 0,-1,-4,-3,-3, 4, 1,-1,-4},
                {-1, 0, 0, 1,-3, 3, 4,-2, 0,-3,-3, 1,-1,-3,-1, 0,-1,-3,-2,-2, 1, 4,-1,-4},
                { 0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2, 0, 0,-2,-1,-1,-1,-1,-1,-4},
                {-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4, 1}

        };
        
        public final static double[][] blosum80 = {
                { 5,-2,-2,-2,-1,-1,-1, 0,-2,-2,-2,-1,-1,-3,-1, 1, 0,-3,-2, 0,-2,-1,-1,-6},
                {-2, 6,-1,-2,-4, 1,-1,-3, 0,-3,-3, 2,-2,-4,-2,-1,-1,-4,-3,-3,-2, 0,-1,-6},
                {-2,-1, 6, 1,-3, 0,-1,-1, 0,-4,-4, 0,-3,-4,-3, 0, 0,-4,-3,-4, 4, 0,-1,-6},
                {-2,-2, 1, 6,-4,-1, 1,-2,-2,-4,-5,-1,-4,-4,-2,-1,-1,-6,-4,-4, 4, 1,-1,-6},
                {-1,-4,-3,-4, 9,-4,-5,-4,-4,-2,-2,-4,-2,-3,-4,-2,-1,-3,-3,-1,-4,-4,-1,-6},
                {-1, 1, 0,-1,-4, 6, 2,-2, 1,-3,-3, 1, 0,-4,-2, 0,-1,-3,-2,-3, 0, 3,-1,-6},
                {-1,-1,-1, 1,-5, 2, 6,-3, 0,-4,-4, 1,-2,-4,-2, 0,-1,-4,-3,-3, 1, 4,-1,-6},
                { 0,-3,-1,-2,-4,-2,-3, 6,-3,-5,-4,-2,-4,-4,-3,-1,-2,-4,-4,-4,-1,-3,-1,-6},
                {-2, 0, 0,-2,-4, 1, 0,-3, 8,-4,-3,-1,-2,-2,-3,-1,-2,-3, 2,-4,-1, 0,-1,-6},
                {-2,-3,-4,-4,-2,-3,-4,-5,-4, 5, 1,-3, 1,-1,-4,-3,-1,-3,-2, 3,-4,-4,-1,-6},
                {-2,-3,-4,-5,-2,-3,-4,-4,-3, 1, 4,-3, 2, 0,-3,-3,-2,-2,-2, 1,-4,-3,-1,-6},
                {-1, 2, 0,-1,-4, 1, 1,-2,-1,-3,-3, 5,-2,-4,-1,-1,-1,-4,-3,-3,-1, 1,-1,-6},
                {-1,-2,-3,-4,-2, 0,-2,-4,-2, 1, 2,-2, 6, 0,-3,-2,-1,-2,-2, 1,-3,-2,-1,-6},
                {-3,-4,-4,-4,-3,-4,-4,-4,-2,-1, 0,-4, 0, 6,-4,-3,-2, 0, 3,-1,-4,-4,-1,-6},
                {-1,-2,-3,-2,-4,-2,-2,-3,-3,-4,-3,-1,-3,-4, 8,-1,-2,-5,-4,-3,-2,-2,-1,-6},
                { 1,-1, 0,-1,-2, 0, 0,-1,-1,-3,-3,-1,-2,-3,-1, 5, 1,-4,-2,-2, 0, 0,-1,-6},
                { 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-2,-1,-1,-2,-2, 1, 5,-4,-2, 0,-1,-1,-1,-6},
                {-3,-4,-4,-6,-3,-3,-4,-4,-3,-3,-2,-4,-2, 0,-5,-4,-4,11, 2,-3,-5,-4,-1,-6},
                {-2,-3,-3,-4,-3,-2,-3,-4, 2,-2,-2,-3,-2, 3,-4,-2,-2, 2, 7,-2,-3,-3,-1,-6},
                { 0,-3,-4,-4,-1,-3,-3,-4,-4, 3, 1,-3, 1,-1,-3,-2, 0,-3,-2, 4,-4,-3,-1,-6},
                {-2,-2, 4, 4,-4, 0, 1,-1,-1,-4,-4,-1,-3,-4,-2, 0,-1,-5,-3,-4, 4, 0,-1,-6},
                {-1, 0, 0, 1,-4, 3, 4,-3, 0,-4,-3, 1,-2,-4,-2, 0,-1,-4,-3,-3, 0, 4,-1,-6},
                {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-6},
                {-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6,-6, 1}
        };
        
        public final static double[][] blosum100 = {
                { 8,-3,-4,-5,-2,-2,-3,-1,-4,-4,-4,-2,-3,-5,-2, 1,-1,-6,-5,-2,-4,-2,-2,-10},
                {-3,10,-2,-5,-8, 0,-2,-6,-1,-7,-6, 3,-4,-6,-5,-3,-3,-7,-5,-6,-4,-1,-3,-10},
                {-4,-2,11, 1,-5,-1,-2,-2, 0,-7,-7,-1,-5,-7,-5, 0,-1,-8,-5,-7, 5,-2,-3,-10},
                {-5,-5, 1,10,-8,-2, 2,-4,-3,-8,-8,-3,-8,-8,-5,-2,-4,-10,-7,-8, 6, 0,-4,-10},
                {-2,-8,-5,-8,14,-7,-9,-7,-8,-3,-5,-8,-4,-4,-8,-3,-3,-7,-6,-3,-7,-8,-5,-10},
                {-2, 0,-1,-2,-7,11, 2,-5, 1,-6,-5, 2,-2,-6,-4,-2,-3,-5,-4,-5,-2, 5,-2,-10},
                {-3,-2,-2, 2,-9, 2,10,-6,-2,-7,-7, 0,-5,-8,-4,-2,-3,-8,-7,-5, 0, 7,-3,-10},
                {-1,-6,-2,-4,-7,-5,-6, 9,-6,-9,-8,-5,-7,-8,-6,-2,-5,-7,-8,-8,-3,-5,-4,-10},
                {-4,-1, 0,-3,-8, 1,-2,-6,13,-7,-6,-3,-5,-4,-5,-3,-4,-5, 1,-7,-2,-1,-4,-10},
                {-4,-7,-7,-8,-3,-6,-7,-9,-7, 8, 2,-6, 1,-2,-7,-5,-3,-6,-4, 4,-8,-7,-3,-10},
                {-4,-6,-7,-8,-5,-5,-7,-8,-6, 2, 8,-6, 3, 0,-7,-6,-4,-5,-4, 0,-8,-6,-3,-10},
                {-2, 3,-1,-3,-8, 2, 0,-5,-3,-6,-6,10,-4,-6,-3,-2,-3,-8,-5,-5,-2, 0,-3,-10},
                {-3,-4,-5,-8,-4,-2,-5,-7,-5, 1, 3,-4,12,-1,-5,-4,-2,-4,-5, 0,-7,-4,-3,-10},
                {-5,-6,-7,-8,-4,-6,-8,-8,-4,-2, 0,-6,-1,11,-7,-5,-5, 0, 4,-3,-7,-7,-4,-10},
                {-2,-5,-5,-5,-8,-4,-4,-6,-5,-7,-7,-3,-5,-7,12,-3,-4,-8,-7,-6,-5,-4,-4,-10},
                { 1,-3, 0,-2,-3,-2,-2,-2,-3,-5,-6,-2,-4,-5,-3, 9, 2,-7,-5,-4,-1,-2,-2,-10},
                {-1,-3,-1,-4,-3,-3,-3,-5,-4,-3,-4,-3,-2,-5,-4, 2, 9,-7,-5,-1,-2,-3,-2,-10},
                {-6,-7,-8,-10,-7,-5,-8,-7,-5,-6,-5,-8,-4, 0,-8,-7,-7,17, 2,-5,-9,-7,-6,-10},
                {-5,-5,-5,-7,-6,-4,-7,-8, 1,-4,-4,-5,-5, 4,-7,-5,-5, 2,12,-5,-6,-6,-4,-10},
                {-2,-6,-7,-8,-3,-5,-5,-8,-7, 4, 0,-5, 0,-3,-6,-4,-1,-5,-5, 8,-7,-5,-3,-10},
                {-4,-4, 5, 6,-7,-2, 0,-3,-2,-8,-8,-2,-7,-7,-5,-1,-2,-9,-6,-7, 6, 0,-4,-10},
                {-2,-1,-2, 0,-8, 5, 7,-5,-1,-7,-6, 0,-4,-7,-4,-2,-3,-7,-6,-5, 0, 6,-2,-10},
                {-2,-3,-3,-4,-5,-2,-3,-4,-4,-3,-3,-3,-3,-4,-4,-2,-2,-6,-4,-3,-4,-2,-3,-10},
                {-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10,-10, 1}
        };

        public final static double[][] blosum62_liu = {
                {10,4,3,3,6,4,4,6,3,4,4,4,4,3,4,7,6,2,3,6,0,0,0,0},
                {4,10,5,3,2,6,5,3,5,2,3,7,4,2,3,4,4,2,3,2,0,0,0,0},
                {3,5,10,6,3,5,5,5,6,3,3,5,3,3,3,6,5,2,3,3,0,0,0,0},
                {3,3,6,10,3,5,7,4,4,3,2,4,3,3,4,5,4,2,3,3,0,0,0,0},
                {4,3,3,3,10,3,2,3,3,4,4,3,4,3,3,4,4,3,3,4,0,0,0,0},
                {4,6,5,5,2,10,7,3,5,2,3,6,5,2,4,5,4,3,4,3,0,0,0,0},
                {5,5,5,7,2,7,10,4,5,3,3,6,4,3,5,5,5,3,4,4,0,0,0,0},
                {5,3,5,4,3,3,3,10,3,2,2,3,3,3,3,5,3,3,3,3,0,0,0,0},
                {2,4,5,3,2,4,4,2,10,2,2,3,2,3,2,3,2,2,5,2,0,0,0,0},
                {5,3,3,3,5,3,3,2,3,10,8,3,7,6,3,4,5,3,5,9,0,0,0,0},
                {5,4,3,2,5,4,3,2,3,8,10,4,8,6,3,4,5,4,5,7,0,0,0,0},
                {4,7,5,4,2,6,6,3,4,2,3,10,4,2,4,5,4,2,3,3,0,0,0,0},
                {4,4,3,2,4,5,3,2,3,6,7,4,10,5,3,4,4,4,4,6,0,0,0,0},
                {3,3,3,3,3,3,3,3,4,5,5,3,5,10,2,3,3,6,8,4,0,0,0,0},
                {4,3,3,4,2,4,4,3,3,2,2,4,3,2,10,4,4,2,2,3,0,0,0,0},
                {7,4,7,6,4,6,6,6,4,3,3,6,4,3,4,10,7,2,3,3,0,0,0,0},
                {4,3,4,3,3,3,3,2,2,3,3,3,3,2,3,6,10,2,2,4,0,0,0,0},
                {2,2,2,2,3,3,2,3,3,2,3,2,3,4,2,2,3,10,5,2,0,0,0,0},
                {3,3,3,2,3,3,3,2,6,3,3,3,3,7,2,3,3,6,10,3,0,0,0,0},
                {6,2,2,2,4,3,3,2,2,9,7,3,7,4,3,3,6,2,4,10,0,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0},
                {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
        };
        
        public final static String alphabet = "ARNDCQEGHILKMFPSTWYVBZX*";
}
